package com.leetcode.offer;

import java.util.Deque;
import java.util.LinkedList;

/**
 * @author zfl
 * @Classname CQueue
 * @Description 两个栈实现一个队列
 * @Date 2020/10/13 14:17
 * 执行用时：70 ms, 在所有 Java 提交中击败了22.27%的用户
 * 内存消耗：47.8 MB, 在所有 Java 提交中击败了10.74%的用户
 * 维护两个栈，一个栈支持插入操作，第二个栈支持删除操作；
 */
public class CQueue {
    Deque<Integer> stackIn;
    Deque<Integer> stackOut;

    public CQueue() {
        stackIn = new LinkedList<Integer>();
        stackOut = new LinkedList<Integer>();
    }

    public void appendTail(int value) {
        stackIn.push(value);
    }

    public int deleteHead() {
        // 如果第二个栈为空
        if(stackOut.isEmpty()) {
            while (!stackIn.isEmpty()) {
                stackOut.push(stackIn.pop());
            }
        }

        if(stackOut.isEmpty()) {
            return -1;
        }else {
            return stackOut.pop();
        }
    }
}
